package br.com.aplic.teste.integracao.entidade;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

import br.com.aplic.teste.integracao.Entidade;

@Entity
@Table(name="tb_autorizacao_excecao_centro_custo")
public class AutorizacaoExcecaoCentroCusto implements Entidade{
	@Embeddable
	public class Id implements Serializable{

		@Column(name="id_centro_custo", nullable=false)
		Long centroCustoId;
		@Column(name="id_autorizacao_excecao", nullable=false)
		Long autorizacaoExcecaoId;
		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;

		public Id(Long centroCustoId, Long autorizacaoExcecaoId) {
			this.centroCustoId = centroCustoId;
			this.autorizacaoExcecaoId = autorizacaoExcecaoId;
		}
		
		
		public Long getCentroCustoId() {
			return centroCustoId;
		}
		public void setCentroCustoId(Long centroCustoId) {
			this.centroCustoId = centroCustoId;
		}


		@Override
		public int hashCode() {
			return autorizacaoExcecaoId.hashCode() + centroCustoId.hashCode();
		}


		@Override
		public boolean equals(Object obj) {
			if (obj!=null && obj instanceof Id){
				Id that = (Id) obj;
				if (this.autorizacaoExcecaoId.equals(that.autorizacaoExcecaoId) &&
						this.centroCustoId.equals(that.centroCustoId))
					return true;
			}
			return false;
		}
		public Long getAutorizacaoExcecaoId() {
			return autorizacaoExcecaoId;
		}
		public void setAutorizacaoExcecaoId(Long autorizacaoExcecaoId) {
			this.autorizacaoExcecaoId = autorizacaoExcecaoId;
		}
		
	}
	
	public static final String strAutorizacaoExcecao = "autorizacaoExcecao";
	public static final String strCentroCusto = "centroCusto";
	public static final String strVlrUltrapassado = "vlrUltrapassado";
	
	@EmbeddedId
//	@AttributeOverrides( {  
//        @AttributeOverride(name = "autorizacaoexExcecaoId", column = @Column(name = "id_autorizacao_excecao", nullable = false)),  
//        @AttributeOverride(name = "centroCustoId", column = @Column(name = "id_centro_custo", nullable = false)) })  
	Id id;
	
	@ManyToOne
	@Cascade(CascadeType.SAVE_UPDATE)
	@JoinColumn(name = "id_autorizacao_excecao", insertable=false, updatable=false, nullable=false)
	private AutorizacaoExcecao autorizacaoExcecao;
	
	@ManyToOne
	@Cascade(CascadeType.SAVE_UPDATE)
	@JoinColumn(name="id_centro_custo", insertable=false, updatable=false, nullable=false)
	private CentroCusto centroCusto;
	
	@Column(name="vlr_ultrapassado")
	private Float vlrUltrapassado;


	public Float getVlrUltrapassado() {
		return vlrUltrapassado;
	}

	public void setVlrUltrapassado(Float vlrUltrapassado) {
		this.vlrUltrapassado = vlrUltrapassado;
	}

	
	@Override
	public Serializable getId() {
		// TODO Auto-generated method stub
		return id;
	}

	public AutorizacaoExcecao getAutorizacaoExcecao() {
		return autorizacaoExcecao;
	}

	public void setAutorizacaoExcecao(AutorizacaoExcecao autorizacaoExcecao) {
		this.autorizacaoExcecao = autorizacaoExcecao;
	}

	public CentroCusto getCentroCusto() {
		return centroCusto;
	}

	public void setCentroCusto(CentroCusto centroCusto) {
		this.centroCusto = centroCusto;
	}
	
	
}


